// 2025/8/14
// 棋子翻转

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param A int整型vector<vector<>> 
     * @param f int整型vector<vector<>> 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > flipChess(vector<vector<int> >& A, vector<vector<int> >& f) {
        // write code here
        vector<int> dx = {-1, 1, 0, 0};
        vector<int> dy = {0, 0, -1, 1};
        auto isValid = [](int x, int y){
            if(x >= 0 && x < 4 && y >= 0 && y < 4)
                return true;
            return false;
        };

        for(auto& pos : f)
        {
            int x = pos[0] - 1, y = pos[1] - 1;
            for(int i = 0; i < 4; i++)
            {
                int nx = x + dx[i], ny = y + dy[i];
                if(isValid(nx, ny))
                    A[nx][ny] = 1 - A[nx][ny];
            }
        }

        return A;
    }
};